package com.quanliang.org.crawlerquanliang;

import com.quanliang.org.crawlerquanliang.core.Container;
import com.quanliang.org.crawlerquanliang.core.Crawler;
import com.quanliang.org.crawlerquanliang.core.ExcelFile;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.Date;
import java.util.concurrent.Executors;

/**
 * 需求：
 * 【编程题】：写一个命令行工具。需要把https://www.aquanliang.com/blog栏目下的
 * 所有文章（包括分页）的标题，发布日期，阅读数以及封面图，输出到一个excel文件。
 * 【要求】时间2天，语言不限
 * 【交卷】上传到自己的github/gitee，将链接发送在boss直聘对话框，我们会尽快安排评卷。
 */
@SpringBootApplication
@Slf4j
public class CrawlerquanliangApplication {

    @SneakyThrows
    public static void main(String[] args) {
        SpringApplication.run(CrawlerquanliangApplication.class, args);
        begin();
    }

    /**
     * 项目起始配置
     */
    private static void begin() {
        //此处可以优化
        //可以提供一个入口URL进行抓取最大page数,动态创建
        for (int i = 1; i <= 59; i++) {
            Container.urlQueue.offer("https://www.aquanliang.com/blog/page/" + i);
        }

        //Excel文件创建和数据的单线程写入
        new ExcelFile();

        //配置线程池线程数,进行多线程爬取资源
        int coreThreadCount = 10;
        Crawler.setExecutorService(Executors.newFixedThreadPool(coreThreadCount));
        System.out.println("爬取路径配置完成,线程池配置完成,即将开始爬虫任务");
        Crawler.start();
    }

}
